#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<stdbool.h>
#include <stddef.h>
 
//定义队列结点的结构
typedef int QDataType;
typedef struct QueueNode
{
	QDataType data;
	struct QueueNode* next;
}QueueNode;                                         //定义节点
 
//定义队列的结构
typedef struct Queue
{
	struct QueueNode* phead;                        //头指针
	struct QueueNode* ptail;                        //尾指针
	int size;                                       //保存队列有效数据的个数
}Queue;
 
//初始化
void QueueInit(Queue* pq);
 
//入队列
void QueuePush(Queue* pq,QDataType x);
 
//判空
bool QueueEmpty(Queue* pq);
 
//出队列
void QueuePop(Queue* pq);
 
//取队头数据
QDataType QueueFront(Queue* pq);
 
//取队尾数据
QDataType QueueBack(Queue* pq);
 
//队列有效元素个数
int QueueSize(Queue* pq);
 
//销毁队列
void  QueueDestroy(Queue* pq);